home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 061-070 / amok63 / m2ced / txt.lha / CED.mod < prev    next >
Text File  |  1991-11-13  |  3KB  |  139 lines

  1. (**********************************************************************
  2.  
  3.     :Program.    CED.mod
  4.     :Contents.   Communication with CED
  5.     :Author.     Steffen Reith
  6.     :Address.    Hessenstr. 64, D-8700 Wuerzburg
  7.     :Phone.      None
  8.     :Copyright.  Shareware
  9.     :Language.   Modula-2
  10.     :Translator. M2Amiga A+L V3.2d
  11.     :Imports.    ARP,req
  12.     :History.    V1.0  1.June 1990
  13.  
  14. **********************************************************************)
  15. (*$ StackParms:=FALSE Volatile:=FALSE CaseChk:=FALSE *)
  16. (*$ StackChk:=FALSE RangeChk:=FALSE OverflowChk:=FALSE NilChk:=FALSE *)
  17. IMPLEMENTATION MODULE CED;
  18.  
  19. FROM SYSTEM IMPORT ADR,ADDRESS,CAST;
  20. FROM ExecD  IMPORT MsgPort,MsgPortPtr,Message,Node,NodePtr,NodeType;
  21. FROM ExecL  IMPORT FindPort,PutMsg,WaitPort,Forbid,Permit,FreeMem;
  22. FROM ARP    IMPORT CreatePort,DeletePort,STRPTR;
  23. FROM req    IMPORT PathTypePtr;
  24.  
  25. CONST CEDPortName='rexx_ced';
  26.  
  27. TYPE CEDMsg=RECORD
  28.              cmNode:Message;
  29.              rfu1:LONGINT;
  30.              rfu2:LONGINT;
  31.              action:LONGINT;
  32.              result1:LONGINT;
  33.              result2:ADDRESS;
  34.              args:ARRAY [1..16] OF ADDRESS;
  35.              rfu7:LONGINT;
  36.              rfu8:LONGINT;
  37.              rfu9:LONGINT;
  38.              rfu10:LONGINT;
  39.              rfu11:LONGINT;
  40.              rfu12:LONGINT
  41.             END;
  42.  
  43. VAR Mes:CEDMsg;
  44.  
  45. PROCEDURE PutMsg2CED (Command:ARRAY OF CHAR):BOOLEAN;
  46.  
  47. VAR CEDMsgPort,Reply:MsgPortPtr;
  48.  
  49. BEGIN
  50.  
  51.  Fehler:=ok;
  52.  
  53.  CEDMsgPort:=FindPort(ADR(CEDPortName));
  54.  IF CEDMsgPort=NIL THEN
  55.   Fehler:=noCED;
  56.   RETURN FALSE
  57.  END;
  58.  
  59.  Reply:=CreatePort(ADR('Aloha_CED'),0);
  60.  IF Reply=NIL THEN
  61.   Fehler:=noReply;
  62.   RETURN FALSE
  63.  END;
  64.  
  65.  WITH Mes DO
  66.   args[1]:=ADR(Command);
  67.   cmNode.node.type:=message;
  68.   cmNode.length:=SIZE(CEDMsg);
  69.   action:=0;
  70.   result2:=0;
  71.   cmNode.replyPort:=Reply
  72.  END;
  73.  
  74.  PutMsg(CEDMsgPort,ADR(Mes));
  75.  WaitPort(Reply);
  76.  DeletePort(Reply);
  77.  
  78.  RETURN TRUE
  79. END PutMsg2CED;
  80.  
  81. PROCEDURE TalkCED(Command:ARRAY OF CHAR):BOOLEAN;
  82.  
  83. CONST ResultFlag=020000H; (* 1L<<17 *)
  84.  
  85. VAR CEDMsgPort,Reply:MsgPortPtr;
  86.  
  87. BEGIN
  88.  
  89.  Fehler:=ok;
  90.  
  91.  CEDMsgPort:=FindPort(ADR(CEDPortName));
  92.  IF CEDMsgPort=NIL THEN
  93.   Fehler:=noCED;
  94.   RETURN FALSE
  95.  END;
  96.  
  97.  Reply:=CreatePort(ADR('Aloha_CED'),0);
  98.  IF Reply=NIL THEN
  99.   Fehler:=noReply;
  100.   RETURN FALSE
  101.  END;
  102.  
  103.  WITH Mes DO
  104.   args[1]:=ADR(Command);
  105.   cmNode.node.type:=message;
  106.   cmNode.length:=SIZE(CEDMsg);
  107.   action:=ResultFlag; (* Come on Result *)
  108.   result2:=0;
  109.   cmNode.replyPort:=Reply
  110.  END;
  111.  
  112.  PutMsg(CEDMsgPort,ADR(Mes));
  113.  WaitPort(Reply);
  114.  DeletePort(Reply);
  115.  Status:=Mes.result2;                (* Bei mir liefert der CED nicht immer *)
  116.  Ergeb:=CAST(LONGINT,Mes.result2);   (* nullterminierte Strings zurueck !!! *)
  117.  
  118.  RETURN TRUE
  119. END TalkCED;
  120.  
  121. PROCEDURE KillString(Ptr:PathTypePtr);
  122.  
  123. TYPE LongPtr=POINTER TO LONGINT;
  124.  
  125. VAR Location:LongPtr;
  126.  
  127. BEGIN
  128.  IF Location#NIL THEN
  129.   Location:=ADDRESS(Ptr);
  130.   DEC(Location,SIZE(Location^));
  131.   FreeMem(Location,Location^)
  132.  END
  133. END KillString;
  134.  
  135. BEGIN
  136.  Status:=NIL;
  137.  Ergeb:=0;
  138. END CED.
  139.